package equipos;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import utils.defines;

public class generador extends defines{
	
	static int cuentaEquipos = 0;
	
	public void crearTabla() throws IOException, SQLException{
		equiposDao.crearTablaEquipos();
	}
	
	public void generarEquipos() throws IOException, SQLException{
		insertarEquipos();
	}
	
	public static void insertarEquipos() throws SQLException, IOException{
		cuentaEquipos = mysql.contarRegistros("equipos");
		equiposPrimeraDivision();
		equiposSegundaDivision();
		equiposSegundaDivisionB();
		equiposTerceraDivision();
		equiposDivisionesRegionales();
		logs.escribir("EQUIPOS CREADOS CORRECTAMENTE");
	}
	
	public static void equiposPrimeraDivision() throws SQLException, IOException{
		generarEquiposPorCategoriaCompeticion(PRIMERA_DIVISION,TEMPORADA_ACTUAL);
	}
	
	public static void equiposSegundaDivision() throws SQLException, IOException{
		generarEquiposPorCategoriaCompeticion(SEGUNDA_DIVISION,TEMPORADA_ACTUAL);
	}
	
	public static void equiposSegundaDivisionB() throws SQLException, IOException{
		generarEquiposPorCategoriaCompeticion(SEGUNDA_DIVISION_B,TEMPORADA_ACTUAL);
	}
	
	public static void equiposTerceraDivision() throws SQLException, IOException{
		generarEquiposPorCategoriaCompeticion(TERCERA_DIVISION,TEMPORADA_ACTUAL);
	}
	
	public static void equiposDivisionesRegionales() throws SQLException, IOException{
		generarEquiposPorCategoriaCompeticion(DIVISIONES_REGIONALES,TEMPORADA_ACTUAL);
	}
	
	/*
	 * 
	 * 
	 * 
	 */
	
	private static void generarEquiposPorCategoriaCompeticion(int categoria,int temporada) throws SQLException, IOException{
		ResultSet competiciones = competicionesDao.getCompeticionesPorCategoria(categoria); //Busca competiciones de la categoria
		while(competiciones.next()){
			int equiposNecesarios = equiposNecesarios(20,equiposDao.countEquiposPorCompeticion(categoria,competiciones.getInt("id_competicion"),temporada));
			insertarPartidosPorCategoriaCompeticion(equiposNecesarios,categoria,competiciones.getInt("id_competicion"),temporada);
			System.out.print(equiposNecesarios+"\n");
		}
	}
	
	public static void insertarPartidosPorCategoriaCompeticion(int equiposNecesarios,int categoria,int competicion,int temporada) throws SQLException, IOException{
		for(int i=1 ; i <= equiposNecesarios ; i++){
			ResultSet club = clubsDao.getRandomClub(competicion,2013);
			while(club.next()){
				System.out.print(i+":"+club.getString("codigo_club")+"->"+club.getString("nombre")+"\n");
				equiposDao.insertarEquipo(club.getString("nombre"),club.getInt("codigo_club"),categoria,competicion,temporada);
				System.out.println("INSERTADO EQUIPO : "+club.getInt("codigo_club")+"->"+club.getString("nombre")+"->"+cuentaEquipos+"/7680");
				cuentaEquipos++;
			}
		} 
	}
	
	
	public static int getClubAleatorio() throws SQLException{

		int randomCodigoClub = clubsDao.getRandomClub();
		int id_competicion = 1;
		int temporada = 2013;
		boolean existeClub = clubsDao.comprobarExistenciaClub(randomCodigoClub,id_competicion,temporada);
		if(existeClub == false){
			return randomCodigoClub;
		}else{
			getClubAleatorio();
		}
		return (int) 0;
	}
	
	
	public static int equiposNecesarios(int totalEquipos,int comprobacionEquipos){
		int total = totalEquipos - comprobacionEquipos;
		return total;
	}
	
	
	/*
	 * 
	 * 
	 * SELECT * FROM clubs t1
  WHERE NOT EXISTS (SELECT * FROM equipos t2 WHERE t1.codigo_club = t2.id_club)
	 * 
	 * 
	 * SELECT codigo_club FROM clubs t1
  WHERE NOT EXISTS (SELECT * FROM equipos t2 WHERE t1.codigo_club = t2.id_club AND t2.id_competicion=1 AND t2.temporada=2013) ORDER BY RAND() LIMIT 0,1
	 * 
	 * 
	 */
	
	
}
